package com.xrh.core.generater.mongo.generater;

import java.io.File;

import org.apache.commons.lang3.StringUtils;

import com.xrh.core.generater.bean.UserInput;
import com.xrh.core.generater.interfaces.TemplateRootPath;
import com.xrh.core.generater.mongo.AddRequestGenerater;
import com.xrh.core.generater.mongo.ControllerGenerater;
import com.xrh.core.generater.mongo.DTOGenerater;
import com.xrh.core.generater.mongo.QueryRequestGenerater;
import com.xrh.core.generater.mongo.ServiceGenerater;
import com.xrh.core.generater.mongo.UpdateRequestGenerater;
import com.xrh.core.generater.utils.FileUtils;
import com.xrh.core.generater.utils.JavaFileAttributeUtils;
import com.xrh.core.generater.utils.JavaFileAttributeUtils.MongoEntityInfo;

/**
* @function mybatis生成器
* @author 肖荣辉
* @date 2018年10月23日
*/
public class MongoGenerater implements TemplateRootPath {
	
	/**
	 * @function 生成文件
	 * @author 肖荣辉
	 * @date 2021年6月29日
	*/
	public void generateFiles(MongoGeneraterUI ui ,  UserInput userInput) {
		
		ui.console("-------正在生成-------");
		
		try {
			
			userInput.setAuthorName("SY-CodeGenerater");
			String chooseJavaFiles  = userInput.getChooseJavaFiles();
			
			if(StringUtils.isBlank(chooseJavaFiles)) {
				ui.console("请选择java文件");
				return;
			}
			
			/*先清空了*/
			FileUtils.delFolder(userInput.getOutputDirPath());
			
			File rootFile = new File(userInput.getOutputDirPath());
			
			rootFile.mkdirs();
			
			String[] filePathArr = chooseJavaFiles.split(",");
			
			for(String filePath  : filePathArr) {
				
				MongoEntityInfo tableInfo = JavaFileAttributeUtils.ReadAttributeFromFile(filePath);
				
				ui.console("正在生成 : " +  tableInfo.getTableName() + "相关文件..");
				
				ControllerGenerater.generateFile(userInput, tableInfo , this);
				
				ServiceGenerater.generateFile(userInput , tableInfo , this);
				
				DTOGenerater.generateFile(userInput , tableInfo , this);
				
				AddRequestGenerater.generateFile(userInput , tableInfo , this);
				
				UpdateRequestGenerater.generateFile(userInput , tableInfo , this);
				
				QueryRequestGenerater.generateFile(userInput , tableInfo , this);
				
			}
			ui.console("生成成功!");
			
		} catch (Exception e) {
			System.out.println("生成失败!");
			e.printStackTrace();
		}
		
		ui.console("缓存用户配置文件 : " + MongoGeneraterUI.CACHE_FILE_NAME);
		ui.cacheUserInput(userInput);
		
		ui.console("-------生成结束-------");
		
		//生成按钮启用
		ui.enableGeneraterBtn();
		
	}

	@Override
	public String getTemplateRootDirPath() {
		return "template/mongo";
	}
	
}
